Page({
  data: {
    isLogin: false,          // 登录状态
    userInfo: null,          // 用户信息
    funcList: [              // 功能列表
      { icon: "/images/express.jpg", text: "取快递" },
      { icon: "/images/takeout.jpg", text: "取送" },
      { icon: "/images/tg.jpg", text: "蔬果" },
      { icon: "/images/bm.jpg", text: "装&修" }
    ],
    pendingAction: null,     // 登录前缓存的操作
    isLoginLoading: false,   // 登录按钮加载态
    userInfoShow: false,     // 用户信息显示动画开关
    userInfoAnimation: {},   // 用户信息动画对象
    funcGridAnimation: {}
  },

  onLoad() {
    this.checkLoginStatus();
    // 缓存丢失时重置登录态
    const userInfo = wx.getStorageSync('userInfo');
    if (!userInfo) {
      this.setData({ isLogin: false, userInfo: null });
    }
  },

  onShow() {
    this.checkLoginStatus();
  },

// 检查登录状态
checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo');
    const isLogin = !!userInfo;
  // 原有逻辑：更新登录状态和用户信息
    this.setData({
      isLogin,
      userInfo: isLogin ? userInfo : null
    });
    console.log('当前登录状态：', isLogin); // 调试用
    return isLogin;
  },
  

// 处理微信授权登录（修改后）
handleWechatLogin() {
  this.setData({ isLoginLoading: true }); // 显示加载态
  wx.getUserProfile({
    desc: '用于完善会员资料',
    success: (res) => {
      const userInfo = res.userInfo;
      wx.setStorageSync('userInfo', userInfo);
      this.setData({
        isLogin: true,
        userInfo,
        isLoginLoading: false // 隐藏加载态
      });
      wx.showToast({ title: '登录成功', icon: 'success' });
      
      // 执行登录成功动画（原有用户信息动画）
      this.initUserInfoAnimation();
      
      // 关键修复：延迟 100ms 调用功能按钮动画，等登录按钮消失
      setTimeout(() => {
        this.initFuncGridAnimation();
      }, 100);
      
      // 执行缓存的操作（原有逻辑）
      if (this.data.pendingAction) {
        try {
          this[this.data.pendingAction]();
          this.setData({ pendingAction: null });
        } catch (err) {
          console.error(' pendingAction 执行失败：', err);
          this.setData({ isLogin: false }); // 回退登录态
          wx.showToast({ title: '操作失败，请重试', icon: 'none' });
        }
      }
    },
    fail: (err) => {
      console.log('授权失败', err);
      this.setData({ 
        isLogin: false, 
        isLoginLoading: false, 
        pendingAction: null 
      }); // 清空状态
      wx.showToast({ title: '授权失败', icon: 'none' });
    }
  });
},

  // 功能按钮跳转
  jumpToPage(e) {
    if (!this.checkLoginStatus()) {
      this.setData({ 
        pendingAction: 'jumpToPage',
        pendingActionArgs: e 
      });
      wx.showModal({
        title: '需要登录',
        content: '请先登录才能使用该功能',
        confirmText: '立即登录',
        cancelText: '稍后再试',
        success: (res) => {
          if (res.confirm) {
            this.handleWechatLogin();
          } else {
            this.setData({ pendingAction: null }); // 取消时清空操作
          }
        }
      });
      return;
    }
    
    const text = e.currentTarget.dataset.text;
    const pageMap = {
      "取快递": "/pages/riderEntry/riderEntry",
      "取送": "/pages/release-order/release-order?type=takeout",
      "蔬果": "/pages/transaction/transaction",
      "装&修": "/pages/renovate/renovate"
    };

    if (pageMap[text]) {
      wx.navigateTo({
        url: pageMap[text],
        fail: (err) => {
          console.error('跳转失败:', err);
          wx.showToast({ title: '跳转失败，请重试', icon: 'none' });
        }
      });
    } else {
      wx.showToast({ title: '功能开发中', icon: 'none' });
    }
  },

  // 初始化用户信息显示动画
initUserInfoAnimation() {
  const animation = wx.createAnimation({
    duration: 300,
    timingFunction: 'ease',
  });
  animation.scale(1.2).opacity(0).step();
  animation.scale(1).opacity(1).step();
  this.setData({
    userInfoShow: true,
    userInfoAnimation: animation.export()
  });
},

// 初始化功能按钮上移动画（让登录后下方按钮上移）
initFuncGridAnimation() {
  const animation = wx.createAnimation({
    duration: 500, // 与用户信息动画时长保持一致，同步过渡
    timingFunction: 'ease', // 动画曲线统一，体验更协调
  });
  // 上移 60rpx（可根据登录按钮高度调整，如 -80rpx 上移更多）
  animation.translateY(0).step(); 
  this.setData({
    funcGridAnimation: animation.export() // 赋值动画，触发功能按钮上移
  });
}

// 注意：这里保留原有的 }); 闭合 Page 对象，不要重复添加
});